﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using DBUtils;

/// <summary>
/// 该页面对应着功能说明书的取消申请页。
/// </summary>
public partial class SubmitOverTime_CancelReq : System.Web.UI.Page
{
    DataSet ds;//存放记录
    /// <summary>
    /// 网页初始化时执行该方法。
    /// 设置控件属性，并向数据库中检索该用户已提交还未审批的加班记录。
    /// 该过程调用 SubmitOTReq.QuerySubmittedReq(CInt(Session("EmployeeID")), dsResult) 函数，
    /// 向数据库中检索该用户已提交还未审批的加班记录。
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Page_Load(object sender, EventArgs e)
    {
        ds = new DataSet();
        int ok = SubmitOTReq.QuerySubmittedReq(Convert.ToInt32(Session["EmployeeID"]), ref ds);
        if (ds.Tables[0].Rows.Count == 0)
        {
            lblMessage.Visible = true;
        }
        if (!IsPostBack)
        {
            //绑定列表
            grdResult.DataSource = ds.Tables[0];
            grdResult.DataBind();
            grdResult.Visible = true;
        }
    }

    /// <summary>
    /// 当用户单击“否”按钮时，该方法将隐藏确定取消区域。
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnNo_Click(object sender, EventArgs e)
    {
        Panel1.Visible = false;
    }

    /// <summary>
    /// 当用户更改 DataGrid 中的选中记录时，该方法隐藏确定取消区域和加班详细信息区域。
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void grdResult_SelectedIndexChanged(object sender, EventArgs e)
    {
        int i = grdResult.SelectedIndex;
        lblReason.Text = ds.Tables[0].Rows[i][6].ToString();
        lblApproverName.Text = ds.Tables[0].Rows[i][10].ToString();
        Panel2.Visible = true;
    }

    /// <summary>
    /// 当用户单击 DataGrid 中的按钮和链接时，
    /// 该方法解析用户的操作（单击“详细情况”链接或“取消”按钮）并做相应处理。
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void grdResult_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Del")
        {
            Panel1.Visible = true;
        }
    }

    /// <summary>
    /// 当用户单击“是”按钮时，该方法则重设数据库中该条加班记录的状态为“已取消”。
    /// 该过程调用 SubmitOTReq.CancelOTReq(CInt(lblOTID.Text)) 函数，操作数据库，更改该条加班记录的状态。
    /// 该过程调用 SubmitOTReq.QuerySubmittedReq(CInt(Session("EmployeeID")), dsResult) 函数，
    /// 从数据库中重新检索该用户可取消的加班记录。
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void BtnYes_Click(object sender, EventArgs e)
    {
        int i = grdResult.SelectedIndex;
        int ok = SubmitOTReq.CancelOTReq(Convert.ToInt32(ds.Tables[0].Rows[i][0]));
        this.Response.Write("<script>alert('" + "成功撤销信息" + "');</script>");//弹出成功信息
        this.Page_Load(sender, e);
    }
}
